package io.renren.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import net.sf.json.JSONArray;

import java.io.*;
import java.util.ArrayList;
import java.util.List;


public class FileTool {
	 /**
     * 获取该路径下所有文件
     * @param strPath
     * @return
     */
    public static List<File> getFileList(String strPath) {
   	 List<File> filelist =new ArrayList<File>();
        File dir = new File(strPath);
        File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                String fileName = files[i].getName();
                if (files[i].isDirectory()) { // 判断是文件还是文件夹
                    getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
                } else if (fileName.endsWith("json")) { // 判断文件名是否以.txt结尾
                    String strFileName = files[i].getAbsolutePath();
                    System.out.println("---" + strFileName);
                    filelist.add(files[i]);
                } else {
                    continue;
                }
            }

        }
        return filelist;
    }
    /** 
     * 获取json文件中的字符串
     * @param filePath String json文件地址
     */ 
 public static String getjsonStr(String filepath){
	 BufferedReader reader = null;
	 String jsonStr = "" ;
	 try{
		 FileInputStream fileInputStream = new FileInputStream(filepath);
		 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
		 reader = new BufferedReader(inputStreamReader,20*1024*1024);
		 String tempString = "";
		 while((tempString = reader.readLine()) != null){
			 jsonStr += tempString;
		 }
		 reader.close();
		 }catch(IOException e){
		 e.printStackTrace();
		 }finally{
		 if(reader != null){
		 try {
		 reader.close();
		 } catch (IOException e) {
		 e.printStackTrace();
		 }
		 }
		 } 
	return jsonStr;
 }
	 /**
	  * json 转list
	  * @param <T>
	  * @param jsonstr
	  * @param classObj
	  * @return
	  */
	 @SuppressWarnings("deprecation")
	public static <T> List<T> Json2List(String jsonstr,Class classObj){
		 List<T> result = null;
		 result=(List<T>) JSONArray.toList(JSONArray.fromObject(jsonstr), classObj);
		 return result;
	 }
	 
	 /**
	     * 将Json字符串信息转换成对应的Java对象
	     *
	     * @param json json字符串对象
	     * @param c    对应的类型
	     */
	    public static <T> T parseJsonToObj(String json, Class<T> c) {
	        try {
	            //两个都是可行的，起码我测试的时候是没问题的。
	            //JSONObject jsonObject = JSONObject.parseObject(json);
	            JSONObject jsonObject = JSON.parseObject(json);
	            return JSON.toJavaObject(jsonObject, c);
	        } catch (Exception e) {
	            System.out.println(e.getMessage());
	        }
	        return null;
	    }

}
